查看原文
其他

Paddle3D正式版发布!BEV、单目、激光雷达3D感知算法开箱即用,无缝衔接Apollo

飞桨 百度AI 2023-03-16


当今时代,通过科技改变生产生活方式的各种先进技术纷纷崛起,交通产业也经历着巨大的变革。国家对于智能交通和交通强国战略的支持使得交通产业更加需要相关技术支撑与赋能。对此,百度飞桨团队与 Apollo 自动驾驶团队强强联合,聚焦人工智能关键技术,深耕自动驾驶各个场景,汇聚各方力量,不断拓宽开源之路。


此次,飞桨基于和 Apollo 自动驾驶团队合作开发的大量业务实践经验,结合自动驾驶感知算法开发难点,正式发布飞桨首个端到端 3D 感知开发套件—— Paddle3D!


Paddle3D 官方开源代码链接如下,也欢迎大家入群进行 3D 感知开发的技术交流,接下来将为大家全面的介绍 Paddle3D。


https://github.com/PaddlePaddle/Paddle3D


Paddle3D 概览


Paddle3D 是百度飞桨官方开源的端到端 3D 感知开发套件,套件整体结构分为框架层、基础层、算法层、工具层4层。


接下来具体介绍一下 Paddle3D 这几部分的内容。


Paddle3D 产品全景图


 01 

 基础层 


基础层主要提供了数据处理管道、数据集的基础支持、自定义算子的开发支持、高级 API 支持。


▎数据处理管道


提供数据处理的 I/O 加速能力,提高训练阶段数据吞吐速度。同时提供多种数据变换、数据增强能力,满足 3D 模型的快速开发。


▎数据集


在本次的正式版中,我们全面支持了自动驾驶三大开源数据集 KITTI、Waymo 和 nuScense。同时,Paddle3D 还支持用户自定义数据集进行训练,详情请前往 Paddle3D 官方开源仓库。此外,百度和清华联合发布了业内首个车路协同 3D 感知数据集 DAIR-V2X,并且相应的比赛“车路协同自动驾驶算法挑战赛”正在如火如荼的进行,第一名奖金高达40000元,欢迎大家使用 Paddle3D 报名参赛打榜,点击下方图片可跳转报名。



▎真值库


在模型精度优化方面,除了模型层面的一些优化策略,Paddle3D 在数据层面也提供了基于真值库的在线优化策略。在做自动驾驶感知任务时,采集和标注点云数据所耗费的人力成本偏高,我们希望可以充分利用已有的数据来拓展训练数据的多样性。基于真值库的在线优化策略是先根据已有的训练数据离线地生成真值库,训练的过程中在线地从真值库里面随机采样一些真值目标,放到当前帧中来合成一帧新的点云,从而提升模型的泛化能力。


下图是使用这个优化策略前后的精度对比情况,整体精度有5.39%的提升。


真值库示例,数据集取自 KITTI


真值库提点效果
▎自定义算子即训即推
3D 感知模型在训练过程中会遇到需要开发特色的自定义算子的情况,例如用于过滤重叠三维框的非极大值抑制操作(3D IoU NMS)、PointNet++中聚合和采样点云的操作、点云体素化操作等等。Paddle3D 的模型均可基于飞桨的原生推理库 Paddle Inference 完成服务器端和云端的模型部署,且不需要在部署阶段重新开发自定义算子,完全做到即训即用。
 02 
 算法层 
算法层主要提供了开箱即用的单目 3D 感知、点云 3D 感知、BEV 3D 感知、多模态 3D 感知等算法,同时提供了主流的骨干网络实现参考。
▎单目 3D 感知模型
在和自动驾驶开源框架 Apollo 的合作过程中,我们沉淀了 SMOKE、CaDDN 这两个经典的单目 3D 感知模型,并且已经作为 Apollo 最新的内置 3D 视觉感知模型。此外,在本次正式版发布中,我们还新增了 DD3D 模型,FCOS3D 模型的支持也即将完成。

单目 3D 检测结果示例,数据取自 Waymo



▎激光雷达 3D 感知模型
除了视觉模型之外,我们在和 Apollo 的合作过程中同样沉淀了激光雷达 3D 感知模型 PointPillars、CenterPoint,且已作为 Apollo 的原生激光雷达支持模型,本次正式版中我们还新增了 IA-SSD、PAConv、PV-RCNN、Voxel-RCNN 等前沿点云 3D 检测模型。同时,也补充了点云分割模型 SqueezeSegV3。
点云 3D 检测结果示例,数据取自 Waymo
▎BEV 模型
在自动驾驶任务中,对周围场景的视觉感知非常重要,这一工作可以通过多个摄像头给出的二维图像完成对 3D 检测框或语义图的检测。
当前,最直接的解决方案是使用单目相机框架和跨相机后处理,该框架的缺点是其需要单独处理不同的视图,无法跨相机捕获信息,导致性能和效率低下。作为单目相机框架的替代方案,一种更统一的框架是从多目相机图像中提取整体表示。鸟瞰图(Bird’s Eye-View,BEV)是一种常用的周围场景表示方法,它能清晰地呈现物体的位置和规模,适用于各种自动驾驶任务。
而最近以 BEV 为基础的 3D 检测方案席卷自动驾驶届,我们也在持续跟进该方向。目前已在 Paddle3D 的模型库中补充 BEV 经典模型 PETR、PETRv2、BEVFormer,而 BEVFusion 正在实现中,即将和大家见面。

BEV 感知结果示例,数据集取自 nuScenes


 03  工具层 
工具层主要提供了基于 VisualDL 的训练、推理效果可视化,同时提供了模型的量化部署加速能力、Apollo 的集成开发能力以及混合精度训练能力。
▎自动混合精度训练支持
自动混合精度训练(Auto Mixed Precision, AMP)是指通过混合使用单精度和半精度数据格式,加速深度神经网络训练的过程,同时保持了单精度训练所能达到的网络精度。混合精度训练能够加速计算过程,同时减少内存使用和存取,并使得在特定的硬件上可以训练更大的模型或 batch size。
Paddle3D 目前全面支持混合精度训练,从而进一步优化 3D 感知算法开发对硬件的需求,加速训练速度。
▎量化部署支持
模型量化是一种将浮点计算转成低比特定点计算的技术,可以有效地降低模型参数大小,降低算力、内存等资源消耗,从而提升模型在端侧硬件上的运行效果。
3D 感知模型相比传统的 2D 检测模型往往模型更复杂,参数更多,在服务器上可能会达到不错的推理速度和精度的平衡。但是实际部署时,帧率往往达不到要求。对此,Paddle3D 目前支持 SMOKE、CenterPoint 的量化部署,同时 Paddle3D 将结合飞桨团队的另一个部署神器 FastDeploy 对 3D 感知模型通过量化压缩等手段在端侧硬件进行端到端的优化,支持更多模型的量化部署。链接参考如下:
https://github.com/PaddlePaddle/Paddle3D/tree/develop/configs/quanthttps://github.com/PaddlePaddle/FastDeploy
▎稀疏卷积支持
在基于点云的 3D 检测任务中,主流的解决思路会把无序的点云表示成有序的三维体素空间,精准地学习到几何结构特征的最佳方法莫过于采取 3D 卷积。但是 3D 卷积耗费非常大的显存和计算量,使得面向实时端侧场景的应用须以损失部分检测精度作为代价,将三维空间压缩至二维空间后采用 2D 卷积来换取速度的提升和计算量的减小。
然而,室外场景中数量高达~100k的点云经过体素化后,三维体素空间的稀疏性低至~0.5%,采用 3D 卷积会有大量零元素的计算浪费。在稀疏 3D 卷积中,会预先建立一个规则表,表中仅记录与卷积核相乘的非零输入元素及其输出元素在密集特征层上的位置,基于规则表完成卷积计算可避免零元素的无效运算。飞桨框架 v2.4 已经全面支持稀疏计算,Paddle3D 也集成了许多使用稀疏3D卷积的前沿模型,如 PV-RCNN、VoxelRCNN、CenterPoint。
以 CenterPoint 为例,基于飞桨原生推理库 Paddle Inference 在一块 RTX 3080 显卡上的推理速度可达到21.20毫秒每帧,nuScenes 验证集上精度 NDS(NuScenes Detection Score)可达到66.74%。

两种常用的稀疏卷积示例图(注:图片引自论文Chen, Yukang, et al. "Focal Sparse Convolutional Networks for 3D Object Detection." Proceedings of the IEEE/CVF Conference on Computer Visionand Pattern Recognition. 2022. )


 04 

 用户体验持续优化 


▎3D 感知算法多卡算力在线开发


考虑到 3D 感知算法在学习使用过程中对显存等硬件资源需求较大,飞桨团队提供了免费的算力资源,方便大家在线开发,同时 Paddle3D 也提供了官方的在线开发示例,欢迎大家 fork 进行二次开发。



在线开发示例链接如下:

https://aistudio.baidu.com/aistudio/projectdetail/5268894

https://aistudio.baidu.com/aistudio/projectdetail/5269115


▎详细文档


文档是快速上手一个开源项目的关键,Paddle3D 针对模型训练部署以及每个算法都有详细的文档说明,欢迎大家阅读浏览,同时我们也欢迎大家一同建立更完善的 Paddle3D 文档和教程。


▎直播课&技术解读文章


考虑到 3D 感知的更新迭代速度快,上手难度大。Paddle3D 会定期组织直播课程,由开发同学为大家深入讲解 3D 感知算法的开发、部署细节;同时也会定期发布技术专栏文章进行解读。相应的课程链接以及技术文章链接我们会定期更新到 GitHub 首页,再次欢迎大家关注 Paddle3D 官方仓库:


https://github.com/PaddlePaddle/Paddle3D


 05 

 Paddle3D & Apollo 无缝衔接 


Apollo 是由百度开源的开放、完整、安全的自动驾驶平台,助力开发者快速搭建自动驾驶系统。

  • Apollo 官方仓库:

https://github.com/ApolloAuto/apollo


Paddle3D 和 Apollo 在持续性的进行合作开发,目前已提供视觉感知模型 SMOKE、CaDDN,点云感知模型 PointPillars、CenterPoint,BEV 感知模型 PETR 的训推打通。用户可以在 Paddle3D 进行模型的训练、测试、导出,然后一键部署集成到 Apollo 的感知算法部分,和下游的跟踪算法、多传感器融合算法、预测算法、规划控制算法全栈运行。同时,用户可以通过 Apollo 的 DreamView 平台联合定位、预测、规划控制模块进行仿真调试,找出 Badcase 指导模型的优化开发。


  • 详细开发步骤请参考:

https://apollo.baidu.com/community/Apollo-Homepage-Document/Apollo_Doc_CN_8_0/lidar


https://apollo.baidu.com/community/Apollo-Homepage-Document/Apollo_Doc_CN_8_0/camera


Paddle3D & Apollo 集成开发,蓝色部分在 Paddle3D 完成,黄色部分在 Apollo 完成


通过 DreamView 进行视觉感知模型仿真调试


通过 DreamView 进行激光雷达感知模型仿真调试


 06 

 总结 


以上就是本次正式版本的主要内容,欢迎大家 fork 体验。未来,我们也将持续进行更新迭代:丰富模型库和预训练模型,持续优化模型在端侧的量化压缩部署,提供更详细的开发文档以及更简洁的 API,为社区带来更好用的 3D 感知开发套件。我们也欢迎社区用户参与到 Paddle3D 的建设中,不断完善 Paddle3D。


自动驾驶届的明星,Apollo 开源平台马上就要迎来他8.0的重磅更新了!关于 Paddle3D 和 Apollo 合作的更多细节也将在这次更新中体现,欢迎大家关注今天下午14:00的 Apollo 开放平台8.0发布会。





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存